package com.dys.processcontrol.circularstructure;

/**
 * @className: com.dys.processcontrol.circularstructure.BreakTest
 * @description: break关键字
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/06/19 下午9:27
 */
public class BreakTest {
    public static void main(String[] args) {
        sum5();
    }

    /**
     * 功能：求1-100的和，当和第一次超过300时，停止程序
     */
    public static void sum() {
        int num = 1;
        int sum = 0;
        while (num <= 100) {
            sum += num;
            if (sum >= 300) {// 和第一次超过300
                // 停止循环
                break;
            }
            System.out.println("每次循环执行的结果: sum = " + sum);
            num++;
        }
        System.out.println("sum = " + sum);
    }

    /**
     * 功能：求1-100的和，当和第一次超过300时，停止程序
     * 当经过很多次循环，sum 来到了 300， 此时走if， if无法通过，所以输出 300 ，然后在走下一次for循环，此时 300 + 25 = 325，
     * 然后走if， if条件通过， break了， 后面的 325也就不会输出了，虽然 sum = 325， 但是后面的代码没有机会去执行。
     */
    public static void sum2() {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
            if (sum > 300) {// 当和第一次超过300
                // 停止程序
                break;
            }
            System.out.println("sum = " + sum);
        }
    }

    public static void sum3() {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
            System.out.println(i);
            if (i == 36) {
                break;
            }
        }
    }

    /**
     * break的作用：停止最近的循环
     */
    public static void sum4() {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
            System.out.println(i);
            while (i == 36) {
                break; // break停止的是while循环,而不是外面的for循环
            }
        }
    }

    /**
     * break带标签的作用：多层循环也可以使用标签，按照需求使用即可
     */
    public static void sum5() {
        int sum = 0;
        outer:
        for (int i = 1; i <= 100; i++) {
            sum += i;
            System.out.println(i);
            while (i == 36) {
                break outer;
            }
        }
    }
}
